// 1，better-scroll不能滚动的问题
// 使用better-scroll时，better-scroll初始化时机太早，（dom和图片等没有完全生成，导致content高度计算不准确，不能进行滚动）
// 1，使用vue的$nextTick来异步初始化better-scroll.,还是没有改变content的高度，可以组件的图片有懒加载问题
// 2，在better-scroll中使用pullUpLoad:true插件，监测pullingUp的事件，然后调用refresh(),重新计算滚动区域的高度


// 2首页的tabControl切换，例如其中的流行滚动，切换到新款，那么新款不是从最前端开始，相应的到了对应的位置。（未解决）

// 3详情页DetailInfo报错  vue报错Error in render: "TypeError: Cannot read property 'length' of undefined"
// 3.1在模板的html标签上使用length报错
// 解决方法：改成:  clumns !== undefined && clumns.length-1
// 3.2  在computed中拿到数组的最后一位，可以使用slice(-1),但是也必须加上
// this.detailGoodsInfo.services !== undefined && this.detailGoodsInfo.services.slice(-1)[0]
// 拿数组最后一个元素，但是不能改变原数组，所有使用slice，不能使用pop和splice


// 4全局filter的使用。（使用plugin）
// 4.1首先在src下创建plugin的文件夹，然后在plugin下的index.js写
// let myPlugin = {};
// myPlugin.install = function(Vue){
// 	Vue.filter('rmb',function(value){
// 		return "￥"+value
// 	})
// }
// export default myPlugin

// 4.2将myPlugin导出后在main.js导入，并且Vue.use(myPlugin),然后整个项目就可以使用rmb的过滤器了
// 4.3 报错 Failed to resolve filter: rmb
// 解决：1，注意install单词别写成intasll了，2，还有一种可能就是在new Vue之前注册过滤器的先后顺序

// 5 判断对象是否拥有某个属性  in方法 ，hasOwnProperty方法，要用call改变this使用
// this.buyerImg ="images" in this.detailRate  //可以
// this.buyerImg2 =this.detailRate.hasOwnProperty('images')  //报错。
// 报错信息 Do not access Object.prototype method 'hasOwnProperty' from target object
// 解决
// this.buyerImg = Object.prototype.hasOwnProperty.call(obj,"images/属性名")


// 6 Vue导航栏在特定的页面不显示~
// 解决方法:
// 公共模块的内容可以放在App.vue中 ，但是通常登录页面是不需要导航的，那么就需要规避登录页
// 这时，就可以采用keep-alive结合$route.meta来实现这个功能。
// keep-alive 是 Vue 内置的一个组件，可以使被包含的组件保留状态，或避免重新渲染。$route.meta则可以选择让需要的页面才展示。修改App.vue，如下

// 7 getmonth()的返回值是 0（一月） 到 11（十二月） 之间的一个整数！注意返回的是索引值而且是从0开始的，所以肯定要加1了，要是不加1就是0月了！


// 8防抖方法的报错 报错信息《《Uncaught TypeError: Cannot read property 'apply' of undefined》》
// 我是因为防抖方法第一个参数传入的是方法，而我传入的方法还加了括号，变成传入的是方法执行后的结果


// 9 关于混入后的报错
// 浏览器报错是 Uncaught (in promise) TypeError: Cannot read property 'components' of undefined （页面不显示，找不到原因）
// 然后在编辑器中发现《"export 'listenerItemMixin' was not found in 'common/utils'》这个报错，原来是有一个组件引入混入文件路径错了

// 10详情页点击标题跳到对应的位置。
// 问题是哪里获取offsetTop才是准确的
// 10.1，在created肯定不行的，压根不能获取元素
// 10.2 在mounted也不行，数据还没获取到。
// 10.3 获取数据的回调中也不行，dom还没有渲染完成
// 10.4 $nextTick也不行，图片的高度没有被计算在内
// 正确的获取应该监听图片的加载，在图片加载完成后在获取offsetTop
// 注意的是，想要获取正确的offsetTop,那么就要放弃懒加载图片，因为懒加载中@load监听到的图片高度是默认加载中图片的高度，
// 要是我们需要的高度不一致，这个方法是不可行的


// 11vuex和vueRouter下载完都需要在main.js中引入使用，而axios是插件，下载后不需要的。除非弄个全局的$http。


// 12vue中，父组件通过props向子组件传递数据是对象，我在子组件中直接修改传过来的值不报错，建议这样做吗？还是要深拷贝出来。
// 除了JSON.parse(JSON.stringify()),我还有其他办法吗？希望大佬帮我扩充下知识面。

// 13在js文件中导入图片要用require("图片路径")

// 14vuex的使用，如果组件要使用vuex的store，且state存储的是对象，那么就需要通过映射，或者计算属性获取，并且要在组件
// 中修改state，修改state必须通过store的setter和mutation修改，不能直接修改state，不然报错了不好追溯错误信息，用到的映射，只要
// 修改state值，那么组件中的数组也是会跟着改变的。 直接在组件没有通过commit提交的话是破坏了单向数据流。

// 15同理，在子组件中也是不允许直接修改从父组件中props传过来的值的。
//
// 16Vue报错：Computed property “XX” was assigned to but it has no setter.
// 原因是我在组件中使用vuex的getters变量，
// 搜索一番，了解 组件中v-model=“XXX”，而XXX是vuex getters中的某个变量，
// 是由v-model ，vuex中是单项流，v-model是vue中的双向绑定，但是在computed中只通过get获取参数值
// 没有set无法改变参数值，因此增加set的方法 ，并将v-model改成:value（我在getters无法设置set方法，所以我只将v-model改成:value）
//

// 17input输入，要在失焦的时候拿值，踩坑，：点击时，实参不用传event。默认有，
// 并且值在event.target.value;在控制台不好找这个值

// 18 vuex中actions可以提交多个mutations的方法吗（尝试在actions里面commit另一个mutation，而不是在mutation里调用另一个mutation方法）
// 处理state的数据，如果是对象，可以用delete来删除某一个对象的某一个属性或者清空对象吗？

// 19mutations唯一的目的就是修改state的状态。所以mutations中的每一个方法完成的事情尽可能的单一一点。
// 做条件判断的事情都在actions中写比较好

// 20报错Invalid prop: type check failed for prop "categoryTopimgList". Expected Array, got Object
// 在分类页面原因是我在定义数据结构的时候给的是对象，然后在传值给子组件时传的时数组
// 未完成


// 	用防抖应该在gooditem上面的啊，
// 	2，详情页评论的时间转换
// 	3，详情页推荐的跳转判断
